From: Marco Trevisan (TreviƱo) Date: Tue, 12 Apr 2022 14:38:40 +0000 (+0200) Subject: gdm/util: Start fingerprint verification once it's available X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~281^2~1^2~98 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d5ca108a65488c369929cfc360b1532e953c7286;p=gnome-shell.git gdm/util: Start fingerprint verification once it's available If fingerprint service is not replying fast enough to our async request, authentication is started but the fingerprint service is never started. So, in case the fingerprint type information is received after that the authentication has been started, let's start the service. Part-of: --- diff --git a/js/gdm/util.js b/js/gdm/util.js index 6731200f6..24593f6b5 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -366,6 +366,13 @@ export class ShellUserVerifier extends Signals.EventEmitter { ? FingerprintReaderType.SWIPE : FingerprintReaderType.PRESS; this._updateDefaultService(); + + if (this._userVerifier && + !this._activeServices.has(FINGERPRINT_SERVICE_NAME)) { + if (!this._hold?.isAcquired()) + this._hold = new Batch.Hold(); + await this._maybeStartFingerprintVerification(); + } } _onCredentialManagerAuthenticated(credentialManager, _token) { @@ -617,11 +624,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { _beginVerification() { this._startService(this._getForegroundService()); + this._maybeStartFingerprintVerification().catch(logError); + } + async _maybeStartFingerprintVerification() { if (this._userName && this._fingerprintReaderType !== FingerprintReaderType.NONE && !this.serviceIsForeground(FINGERPRINT_SERVICE_NAME)) - this._startService(FINGERPRINT_SERVICE_NAME); + await this._startService(FINGERPRINT_SERVICE_NAME); } _onChoiceListQuery(client, serviceName, promptMessage, list) {